﻿/*
 * @Author: nqx2007 fenglimima334@163.com
 * @Date: 2023-12-04 19:47:19
 * @LastEditors: nqx2007 fenglimima334@163.com
 * @LastEditTime: 2023-12-11 21:29:34
 * @FilePath: /operator-manager/config/requestErrorConfig.ts
 * @Description: 请求的相关配置
 */
import type { RequestConfig } from '@umijs/max';
import { message } from 'antd';

/**
 * @name 错误处理
 * @doc https://umijs.org/docs/max/request#配置
 */
export const errorConfig: RequestConfig = {
  errorConfig: {
    errorHandler: (error: any, opts: any) => {
      if (opts?.skipErrorHandler) throw error;
      if (error.response) {
        // Axios 的错误
        // 请求成功发出且服务器也响应了状态码，但状态代码超出了 2xx 的范围
        message.error(`Response status:${error.response.status}`);
      } else if (error.request) {
        // 请求已经成功发起，但没有收到响应
        // \`error.request\` 在浏览器中是 XMLHttpRequest 的实例，
        // 而在node.js中是 http.ClientRequest 的实例
        message.error('None response! Please retry.');
      } else {
        // 发送请求时出了点问题
        message.error('Request error, please retry.');
      }
    },
  },
  // 响应拦截器
  responseInterceptors: [
    (response: any) => {
      // 拦截响应数据，进行个性化处理
      if (response?.status === 200) {
        const { data } = response;
        if (!data?.success) {
          message.error(data?.message);
        }
        return response;
      }
    },
  ],
};
